<?php

class TipoNomencladorController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete','carga'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
        
         
         /**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=TipoNomenclador::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

        
        
	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='pais-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
        
        /****************************************************************/
        /****************************************************************/
        
        public function actionDelete($id)
	{
          $transaction = Yii::app()->db->beginTransaction();
          
          try{ 
            $this->loadModel($id)->delete();
            
            $logs = new LogsTransacciones;
            $logs->tabla = Yii::app()->getController()->getId();
            $logs->fecha = date('Y-m-d');
            $logs->usuario =  Yii::app()->user->name;
            $logs->operacion = 'ELIMINACION';
            $logs->comentarios = 'ELIMINACION - ' . $id;
            $logs->save();
            $transaction->commit();
            
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('success','EXITO!!!. La eliminacion fue Exitosa.');
           else{
                 echo CJSON::encode(array(
                         'result'=>1,
                         'result_texto'=>'La Eliminacion fue Exitosa!!!',                       
                        ));
                    Yii::app()->end(); 
                    exit;
               }                
         }catch(CDbException $e)
           {
            $transaction->rollBack();
             
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('error','ERROR!!! No se puedo realizar la eliminacion!!!');
            else
                {
                 echo CJSON::encode(array(
                         'result'=>0,
                         'result_texto'=>'NO se pudo realizar la Eliminacion',
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            
           }
 
            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if(!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
	}
        
        public function actionAdmin()
	{          
		$model=new TipoNomenclador('search');
		$model->unsetAttributes();  
                
		if(isset($_GET['TipoNomenclador']))
			$model->attributes=$_GET['TipoNomenclador'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}
        
        
       public function actionCarga(){
        $transaction = Yii::app()->db->beginTransaction();       
         try{
             
       
            if (isset($_POST['nom'])){
               $id = (int) $_POST['nom'];          
             
               if ($id > 0)
                  { $modelTNomenclador=$this->loadModel($id); }
               else
                  { $modelTNomenclador = new TipoNomenclador;  }
             }
             else
              {  $modelTNomenclador = new TipoNomenclador;  }
              
             if (isset($_POST["nom-oct"]))
             {
              $idact = (int) $_POST["nom-oct"];
              if ($idact>0)
              {  
                  $modelTNomenclador=$this->loadModel($idact);             
              }            
              }      
        
           
         
           $esNuevo = true;
           if(isset($_POST['TipoNomenclador']))// si recibimos el formulario lo procesamos
           {  $esNuevo = $modelTNomenclador->isNewRecord;
              $modelTNomenclador->attributes=$_POST['TipoNomenclador'];
          
              if($modelTNomenclador->save()) //si no hubo errores pasa, guarda y mostramos cartel de correcto
              {
                  
                $logs = new LogsTransacciones;
                $logs->tabla = Yii::app()->getController()->getId();
                $logs->fecha = date('Y-m-d');
                $logs->usuario = Yii::app()->user->name;
                if ($esNuevo){
                  $logs->operacion = 'ALTA';
                  $logs->comentarios = 'ALTA - ' . $model->id;
                }else{
                $logs->operacion = 'MODIFICACION';
                $logs->comentarios = 'MODIFICACION - ' . $model->id;
                }                 

                    $logs->save();
                    $transaction->commit();    
              
                 if (Yii::app()->request->isAjaxRequest)  //se proceso correctamnte
                {
                    if (($esNuevo==1) || ($esNuevo==true)){
                      echo CJSON::encode(array(
                         'status'=>'En Proceso', 
                         'result'=>1,
                         'result_texto'=>'Se cargo correctamente!!!',
                         'div'=>"CARGA Finalizada con Exito!!!. El Proceso fue exitoso",
                        ));
                    }
                    else{
                        echo CJSON::encode(array(
                         'status'=>'En Proceso', 
                         'result'=>1,
                         'result_texto'=>'LA ACTUALIZACION SE LLEVO A CABO CON EXITO',
                         'div'=>"ACTUALIZACION Finalizada con Exito!!!. El Proceso fue exitoso",
                        ));
                    }
                    Yii::app()->end(); 
                    exit;
                }    //fin del   Yii::app()->request->isAjaxRequest      
              }
          }
        
            if (Yii::app()->request->isAjaxRequest) 
             {
             echo CJSON::encode(array(
                'status'=>'formulario',
                'result'=>0, 
                'div'=>$this->renderPartial('_form', array('model'=>$modelTNomenclador,'post'=>$_POST), true)));
                Yii::app()->end();
                exit;
             } 
         }
         catch(CDbException $e)
        {
            $transaction->rollBack();
             
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('error','ERROR!!! No se puedo realizar la eliminacion!!!');
            else{
                {
                 echo CJSON::encode(array(
                         'result'=>0,
                         'result_texto'=>'SE PRODUJO UN ERROR AL QUERER ',
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            }
        }
     } //fin de la actionCarga
        
       
}
